package com.ray.monitor.util;

/**
 * 字节转换工具
 *
 * @author LiaoYuXing-Ray
 * @version 1.0
 * @createDate 2024/5/23 9:24
 **/
public class SizeUtils {
    /**
     * 工具类中的方法都是静态访问的，因此将构造器私有不允许创建对象
     */
    private SizeUtils() {
        throw new AssertionError();
    }

    /**
     * 字节转换
     *
     * @param size 字节大小
     * @return 转换后值
     */
    public static String formatBytes(long size) {
        long kb = 1024;
        long mb = kb * 1024;
        long gb = mb * 1024;
        if (size >= gb) {
            return String.format("%.3f GB", (float) size / gb);
        } else if (size >= mb) {
            float f = (float) size / mb;
            return String.format(f > 100 ? "%.2f MB" : "%.3f MB", f);
        } else if (size >= kb) {
            float f = (float) size / kb;
            return String.format(f > 100 ? "%.2f KB" : "%.3f KB", f);
        } else {
            return String.format("%d B", size);
        }
    }
}
